// ValgStuderende.cpp : implementation file
//

#include "stdafx.h"
#include "EBASApp.h"
#include "ValgStuderende.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CValgStuderende dialog


CValgStuderende::CValgStuderende(CWnd* pParent /*=NULL*/)
	: CDialog(CValgStuderende::IDD, pParent)
{
	//{{AFX_DATA_INIT(CValgStuderende)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

	m_valgte = NULL;
	m_antalValgte = 0;
}

CValgStuderende::~CValgStuderende()
{
	if (m_valgte)
		delete m_valgte;
}

int CValgStuderende::get_Antal()
{
	return m_antalValgte;
}

void CValgStuderende::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CValgStuderende)
	DDX_Control(pDX, IDC_LIST_ALLE_STUD, m_studerende);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CValgStuderende, CDialog)
	//{{AFX_MSG_MAP(CValgStuderende)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CValgStuderende message handlers

void CValgStuderende::OnButtonOk() 
{
	int nSel = m_studerende.GetSelCount();
	
	int * sels = new int[nSel];	
	m_valgte = new CString[nSel];
	m_antalValgte = nSel;
	
	m_studerende.GetSelItems(nSel, sels);

	for (int i=0; i<nSel; i++) {
		CString s;		
		m_studerende.GetText(sels[i], s);
		
		CString cpr; 
		int pos = s.Find("*");
		for (int p = 0; p<pos-1; p++)
			cpr += CString(s.GetAt(p));

		m_valgte[i] = cpr;
	}

	CDialog::OnOK();
}

CString * CValgStuderende::get_ValgteCprNr()
{
	return m_valgte;
}

BOOL CValgStuderende::OnInitDialog()
{
	BOOL res = CDialog::OnInitDialog();

	UpdateData();
	
	try {

		EBASDLLLib::IEnumStuderendePtr pEnumStud;
		pEnumStud.CreateInstance(__uuidof(EBASDLLLib::EnumStuderende));
		
		IUnknown * pUnk = NULL; 
		ULONG fetched = 0;

		pEnumStud->Next(&pUnk, &fetched);
		while (NULL != pUnk) {
			EBASDLLLib::IStuderendePtr pStud = NULL;
			pUnk->QueryInterface(&pStud);
			
			CString s;
			s = CString((char*)pStud->CPRNr) + " * " + CString((char*)pStud->Fornavn) + " " + CString((char*)pStud->Efternavn);
			
			m_studerende.AddString(s);

			pUnk = NULL;
			pStud = NULL;

			pEnumStud->Next(&pUnk, &fetched);
		}

	} catch (...) {

	}

	UpdateData(FALSE);

	return res;
}